因爲我們後端是用 django,所以我們要用 python 來操作 MongoDB,MongoDB 官方推薦的 python driver 是 pymongo
,首先來安裝
pip install pymongo
在想使用的檔案內加入
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
是用來連接資料庫,還有其他種寫法,不過我們之後還要做資料庫複制、資料庫身份驗證,資料路加密等等,這種寫法之後會比較好更改
接下來來介紹常用的基本操作,以我的經驗來講,應該大部分時間都是在用這些,其他進階功能都是偶爾用一下
首先來連接一個 db 和 collection 再繼續接下來的教學
mydb = myclient['database']
mycol = mydb['collection']
mycol.find({'name':'John'})
這個方法會返回所有 name
叫做 John
的 document,比方說我們有三筆資料如下
{
'name':'John',
'height':176
},
{
'name':'John',
'height':180
},
{
'name':'David',
'height':175
},
那 mycol.find({'name':'John'})
便會返回
[
{
'name':'John',
'height':176
},
{
'name':'John',
'height':180
}
]
這兩筆資料,以陣列的形式
mycol.find_one({'name':'David'})
這個方法就只會返回符合條件的第一筆資料,通常是用在符合這個條件的資料只有一筆,像我有一個專案是要操作機房內的多台 server 去跑測試,資料庫這邊有一個 collection 是去記錄各個 server 的設定,每個 document 都是對應唯一的 server,使用時就像這樣
mycol.find_one({'server':'server4'})
再來是更改資料,比方說要更改資料庫上記錄 server 的 document 的資料
mycol.find_one_and_update({'server':'server4'}, {'$set':{'ip':'172.21.1.64'}})
第一個參數是查詢條件,{'$set':{'ip':'172.21.1.64'}}
是去設定 ip
這個資訊改成 172.21.1.64
新增和更改資料都有了,接下來講刪除
mycol.find_one_and_delete({'name':'David'})
有時候我們會想知道到底在這個 collection 內有多少資料,或者在這個 collection 內符合這個查詢條件的資料有多少
mycol.count_documents({})
這樣就可以知道在這個 collection 內有多少資料了